# -*- coding: UTF-8 -*-
class Hazen_Willians:
    """
    Q 横断面流量
    C hanzen-willians 糙率系数
    A 断面面积
    R 水力半径
    S 水力坡度
        #水力坡度计算公式，如河道上A、B两点的距离为100公里，B点的水位比A点高20米，则水力坡度为万分之二。
    K 常数  0.85

    """
    def __init__(self,C,A,R,K,S):
        self.C = C
        self.A = A
        self.R = R
        self.K = K
        self.S = S


#水力坡度计算公式，如河道上A、B两点的距离为100公里，B点的水位比A点高20米，则水力坡度为万分之二。
    # 计算水力坡度
    def computS(self,startNode_z_coordinate,endNode_z_coordunate,distance):
        self.S = (startNode_z_coordinate - endNode_z_coordunate)/distance


    def computeFlow(self,S:float):
        while True:
            Q = self.K * self.C * self.A * self.R * S

class HeadLoss:
    """
    Cf 器件换算因子 英：4.73  米：10.7
    D 管路直径
    L 管路长度
    Q 管路流速
    C hazen-willians 系数
    """
    def __init__(self,Cf,D,L,Q,C,Hl):
        self.Cf = Cf
        self.D = D
        self.L = L
        self.Q = Q
        self.C = C
        self.Hl = Hl

    def computeHeadLoss(self):
        while True:
            self.Hl = (self.Cf * self.L * self.Q)/(self.C * self.D)
